PHP에서 문자열의 일부만 가져와야(잘라야) 할 경우 일반적으로
substr() 함수를 사용하죠. 그런데
만약 한글이라면 이 함수를 사용할 경우 뒷부분에 의도치 않은 문자가 나타날 수 있습니다.
# php 문자열 자르는 방법
먼저 위와같이 이상한 문자가 나타나는 이유는 한글 인코딩의 byte 단위가 영문과 다르기 때문입니다. 이때는 mb_substr() 함수를 사용해 해결할 수 있습니다.
mb_substr(문자열, 시작위치, 나타낼 길이, 인코딩방식);
인코딩 인자에는 아래와 같은 문자 인코딩이 사용될 수 있습니다.
그럼 아래에서 예제를 사용하여 자세히 알아봅니다.
# mb_substr()함수의 예제
만약 $sitename가 '랭킹이즈' 이라고 할 경우 아래와 같이 사용할 수 있습니다. 두 개의 함수를 모두 사용하여 결과가 어떻게 다른지 알아봅니다.
<?php
$sitename = '웹이즈프리';
echo mb_substr($sitename, 0, 3, 'utf-8');
// UTF-8 인코딩인 경우
echo mb_substr($sitename, 0, 3, 'euc-kr');
// EUC-KR 인코딩인 경우
?>
결과는 아래와 같이 나타납니다.
웹이즈
// mb_substr() 함수를 사용해 정확히 한글의 일부만 출력
이처럼 한글인 경우에 mb_substr() 함수를 사용하면 바이트 단위가 아닌 문자열의 길이로 쉽게 자를 수 있습니다.